//
// Created by hanlinbo on 2020/5/14.
//
#include<stdio.h>
#include<string.h>

/**
 * @param s
 */

// abcwtac
// a


void* Memcpy(char *Dst, char *Src, int size) {
    for (int i = 0; i < size; ++i) {
        *((char *) Dst + i) = *((char *) Src + i);
    }
    if(strlen(Dst) > size) {
        Dst[size] = '\0';
    }
    return Dst;
}


void q3(char *s){
    char temp[1000]; //
    int size = 0; // 临时存储的最长字符串长度
    int max = 0;
    int i = 0, j = 0;
    int length = strlen(s);


    for(; i<length; i++){
        // 遍历已经存储的无重复字符串，判断新的字符是否重复
        for(j = 0; j< size; j++) {
            if(s[i] == temp[j]) { // 如果重复， j < size, j的位置就是重复的位置  else 不重复的话 j === size
                break;
            }
        }

        // 没有重复的, 添加i+1位置的字符到temp数组,temp数组长度+1
       if(j == size) {
            temp[size] = s[i];
            size++;
        } else if(j < size){  // 出现重复, temp中位置为j的字符和s中i位置字符重复，    重置 temp数组为1， 重置 i的位置到j, 删除字符串j+1之前的字符
           int restLength = strlen(s) - j - 1;
           char rest[restLength];
           Memcpy(rest, s + j + 1, restLength);
//           rest[restLength] = '\0';
           s = rest;
//           printf("%s\n", rest);
           length = restLength;
           size = 0;
           i= - 1;
        }

        if(size > max) max = size;
    }

   printf("max string length  is %d", max);
}